import java.util.PriorityQueue;

public class test2 {
    public int halveArray(int[] nums) {
        // 使用大根堆,一直找最大的
        PriorityQueue<Double> queue = new PriorityQueue<>((a,b)->b.compareTo(a));
        double sum = 0.0;
        for (int x:nums){
            queue.offer((double)x);
            sum+=x;
        }
        sum /= 2.0;
        int count=0;
        while (sum>0){
            double flag = queue.poll()/2; // 最大数
            sum -= flag;
            count++;
            queue.offer(flag);
        }
        return count;
    }
}
